package br.com.SAM.Bean;

import java.util.Collection;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.com.SAM.Interfaces.IMedico;
import br.com.SAM.modelos.Medico;
@Stateless(name="MedicoBean")
public class MedicoBean extends GenericBean implements IMedico{
	@PersistenceContext(unitName="sam")
	private EntityManager em;

	public Medico findMedicoById(long cpf) {
		Medico me = null;
		if(em!=null){
			me = em.find(Medico.class, cpf);
			
		}
		return me;
		
	}

	public Medico findByCNS(String cns) {
		Query q = em.createNamedQuery("medico.findByCNS");
		q.setParameter("param", cns);
		
		try{
			Medico medico = (Medico)q.getSingleResult();
			return medico;
		}catch(NoResultException nre){
			return null;
		}
		
		
	}

	public Medico findByName(String nome) {
		Query q = em.createNamedQuery("medico.findByName");
		q.setParameter("param", nome);
		
		try{
			Medico medico = (Medico)q.getSingleResult();
			return medico;
		}catch(NoResultException nre){
			return null;
		}
	}
	
	public Medico findByCpf(long cpf) {
		Query q = em.createNamedQuery("pessoa.findByCpf");
		q.setParameter("param", cpf);
		
		try{
			Medico medico = (Medico)q.getSingleResult();
			return medico;
		}catch(NoResultException nre){
			return null;
		}
		
		
	}

	public Collection<Medico> listByName(String nome) {
		Query q = em.createNamedQuery("medico.listByName");
		nome = "%"+nome+"%";
		q.setParameter("param", nome);
		Collection<Medico> medicos = q.getResultList();
		return medicos;
	}

	@Override
	public Object delete(Object o) {
		Medico medico = (Medico) o;
		medico = em.find(Medico.class, medico.getId());
		
		return super.delete(medico);
	}
	
	


	

}
